home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / text / docs / grip_v2.lzh / GRIP.txt
Text File  |  1992-08-04  |  12KB  |  293 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                ........................................
  7.                ...__________________________________...
  8.                ../__________________________________\..
  9.                ../____/~~~~\/~~~~~\/~~~~\/~~~~~\____\..
  10.                ../___/~~\/~~V~~\/~~\/~~\_/~~\/~~\___\..
  11.                ../___/~~\___/~~\/~~\/~~\_/~~\/~~\___\..
  12.                ../___/~~V~~~V~~~~~\_/~~\_/~~~~~~\___\..
  13.                ../___/~~\/~~V~~\/~~\/~~\_/~~\_______\..
  14.                ../___/~~\/~~V~~\/~~\/~~\_/~~\_______\..
  15.                ../____/~~~~\/~~\/~~V~~~~\/~~\_______\..
  16.                ../__________________________________\..
  17.                ../                                  \..
  18.                ........................................
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.                Graphical Rendition Interchange Protocol
  37.  
  38.                          format specifications
  39.  
  40.                                Version 2
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.                         devised by Michael Glew
  58.  
  59.                             2nd August 1992
  60. -----------------------------------------------------------------------
  61.                             AN INTRODUCTION
  62. -----------------------------------------------------------------------
  63.  
  64.      Over  the years,  I  have  used  many  BBS's and  have encountered
  65. interesting  protocols such  as AVATAR  and SKYPIX.  As I was extremely
  66. interested  with SKYPIX,  I wondered  if it  was possible  to create  a
  67. multimedia graphics protocol that  would be  flexible and simple enough
  68. to be used  on all  machines, yet  is powerful  enough to  create great
  69. looking graphics  screens on  BBS's,  on  any resolution  screen;  from
  70. block character graphics (160x50) to SVGA (1024x850)?!
  71.  
  72.      The transfering of full  bit map  raster files over networks was a
  73. bit stupid  with non-digital  phone lines,  where a  picture could take
  74. anything from 60  seconds to  10 minutes  to transfer  to your machine,
  75. even if  it is  compressed with  MNP or  GIF protocols.   I decided  to
  76. leave  this  to  other  protocols,   and  just  handle  simple  graphic
  77. commands.
  78.  
  79.      The commands are meant to be  part of an ASCII file, much like how
  80. ANSI is  implemented.  A  double escape  (<ESC><ESC>) signals the start
  81. of GRIP mode, and  continues  until  another double  escape is reached.
  82. Each graphic command is followed  immediately by a carriage return, and
  83. line feeds  and spaces  are ignored.   The commands  are meant  to look
  84. like a script, so that editing is simplified.
  85.  
  86.      One  thing must  be  noted  though;   This  protocol is  character
  87. orientated.  That is to say that  the resolution on a 80x25 text screen
  88. is 80x25 - this is to  make formatting  menus and the such easier.  The
  89. line, though will be of the  resolution of the graphics capabilities of
  90. the screen  used.  eg.   if  a  CGA 320x200  screen is  used, then  the
  91. matrix resolution will  be 40x25,  but the  lines will be drawn up to a
  92. resolution  of  320x200,  as  will  circles  and  area  fill  patterns.
  93. Speaking of fill  patterns, as  most machines  will have  8x8 character
  94. matrices, then  that will  be the  base pattern  matrix, so on machines
  95. that have  say a  16x16  character  matrix,  will  have 4  matrices per
  96. character, or twice the resolution.
  97.  
  98.      In Version 1  of the  specifications,  there was the ability to
  99. control the  resolution  directly  using the  protocol.  I decided this
  100. would be a bad idea, so  this has  been removed.  The terminal software
  101. will take  the  default  80x25  screen  data  as  input and  optionally
  102. translate  it to  whatever size  screen  it  currently has.   eg.  If A
  103. 80x32 screen  is used  (on Amiga  PAL  machines),  then say  a C15;16;5
  104. command can be interpreted  as a  C15;20;5 command, hence the aspect of
  105. the entire screen  can be  preserved.   Please  note that  the software
  106. will have to handle correct circle  aspects itself.  Either by hardware
  107. checking, or by user default settings.
  108. -----------------------------------------------------------------------
  109.                         T H E   C O M M A N D S
  110. -----------------------------------------------------------------------
  111.  
  112. NB:  variables in the form a,b represent coordinates (x,y)
  113.      up arrows (^) point to the set of variables that can be repeated
  114.  
  115. -----------------------------------------------------------------------
  116.  
  117.        Name:   Vector
  118. Description:   Draw line(s), join the given points with line vectors
  119.   Variables:   a,b = point
  120.       Usage:   Va;b
  121.     Repeats:    ^^^
  122.     Example:   V0;0;10;10;30;10;0;0
  123.       Notes:   - a and b will be of type BYTE
  124.                - this command will  move to  the first coordinate if no
  125.                current coordinate is  defined, and  draw a line to each
  126.                following  coordinate, updating  the current  coordinate
  127.                at each step:
  128.  
  129.                eg.   move(0,0)      ; move to (0,0) - only if undefined
  130.                      line(0,0)      ; draw to (0,0)
  131.                      line(10,10)    ; draw to (10,10)
  132.                                     ; move to (10,10)
  133.                      line(30,10)    ; draw to (30,10)
  134.                                     ; move to (30,10)
  135.                      line(0,0)      ; draw to (0,0)
  136.                                     ; move to (0,0)
  137.  
  138.  
  139.        Name:   Circle
  140. Description:   Draw circle(s) in current foreground colour
  141.   Variables:   a,b  = centre
  142.                r    = radius
  143.       Usage:   Ca;b;r
  144.     Repeats:    ^^^^^
  145.     Example:   C10;20;5;10;40;3
  146.       Notes:   - a, b and r will be of type BYTE
  147.                - this command  will simply  draw circles  as described,
  148.                but applications  will  either  adjust circle  aspect to
  149.                appear  1:1, or  the aspect  will be  adjustable by  the
  150.                user.
  151.  
  152.  
  153.        Name:   Box
  154. Description:   Draw box(es) in current foreground colour
  155.   Variables:   a,b  = top-left corner
  156.                c,d  = bottom-right corner
  157.       Usage:   Ba;b;c;d
  158.     Repeats:    ^^^^^^^
  159.     Example:   B0;0;10;10;3;3;7;7
  160.       Notes:   - a, b, c and d will be of type BYTE
  161.                - this command could  hand values to the Vector command,
  162.                as this could share code,  and make things simpler.  But
  163.                if the  application machine  has  kernal  routines to do
  164.                this,  you should  use these  routines, as  they will be
  165.                faster.   (Not that  it would  make a  difference at low
  166.                baud rates.)
  167.        Name:   Fill
  168. Description:   Fill enclosed area(s) with current colours
  169.   Variables:   a,b  = starting point
  170.       Usage:   Fa;b
  171.     Repeats:    ^^^
  172.     Example:   F20;10;1;27
  173.       Notes:   - a and b will be of type BYTE
  174.                - there should  be  kernal  routines to  handle this  on
  175.                most  graphics  orientated   machines,  write  your  own
  176.                otherwise.
  177.                - the enclosure  of the  Fill can  be any colour but the
  178.                background colour
  179.  
  180.  
  181.        Name:   Thick
  182. Description:   Set drawing thickness
  183.   Variables:   a    = thickness as a percentage of character width
  184.       Usage:   Ta
  185.     Repeats:   none
  186.     Example:   T30
  187.       Notes:   - a will be of type BYTE
  188.                - eg. T30  will give  30% character  width, which  on an
  189.                8x8 character,  is 2.4  pixels.  Most routines should be
  190.                able  to work  with non-integer  Thickness, for  maximum
  191.                quality.  Please  note  that  routines should  work with
  192.                round "pens":
  193.  
  194.                eg.  1 pixel thickness                       *
  195.  
  196.                     2 pixel thickness                       **
  197.                                                             **
  198.  
  199.                     3 pixel thickness                       ***
  200.                                                             ***
  201.                                                             ***
  202.  
  203.                     4 pixel thickness                        **
  204.                                                             ****
  205.                                                             ****
  206.                                                              **
  207.  
  208.                The routine to define  the "pen"  should use pixels more
  209.                than 50% filled  by a  perfect, adjusted  aspect, circle
  210.                with a diameter that of the thickness value.
  211.  
  212.  
  213.        Name:   Pattern
  214. Description:   Set the fill pattern
  215.   Variables:   a0..a7    = 8x8 matrix bits grouped in to bytes
  216.       Usage:   Pa
  217.     Repeats:    ^ (up to 8 bytes)
  218.     Example:   P85;170 (equivalent to P85;170;85;170;85;170;85;170)
  219.       Notes:   - a is of type BYTE
  220.                - default value is 255
  221.  
  222.  
  223.        Name:   SetPen
  224. Description:   set the Foreground and Background colours
  225.   Variables:   f    = foreground colour (drawing)
  226.                b    = background colour (fill and clear)
  227.       Usage:   Sf;b
  228.     Repeats:   none
  229.     Example:   S4;2
  230.       Notes:   - f and b are of type BYTE
  231.                - works  with  standard  ANSI   colours  (16),  upper  8
  232.                converted to lower 8 if only 8 colours available.
  233.        Name:   Comment
  234. Description:   Allows commenting of GRIP commands
  235.   Variables:   a$   = comment text
  236.       Usage:   *a$
  237.     Repeats:   none
  238.     Example:   * This menu was written by Joe Bloggs 2001
  239.       Notes:   - These should be ignored  by the  GRIP interpreter, and
  240.                ideally, they should  be chopped from the sent GRIP text
  241.                file, by the sending software.
  242. -----------------------------------------------------------------------
  243.                              IN CONCLUSION
  244. -----------------------------------------------------------------------
  245.  
  246.      So there are the  basic commands,  but no  doubt there may be more
  247. to come,  such as  heading text  writers and  the such,  and maybe even
  248. sound will be added - lets wait and see!!!
  249.  
  250.      Outside this protocol,  ANSI and  indeed AVATAR can be used as per
  251. normal.  Carriage Returns may be  ignored if at the start of a command,
  252. eg. if there are two carriage returns  after a command, then the second
  253. one will be ignored - this helps  with formatting  your GRIP text file.
  254. But most GRIP sensitive  BBS packages  will filter  out comments to get
  255. the most efficient output from the serial connection.
  256.  
  257.      It is entirely  optional, but  the fill  styles will  apply to 1:1
  258. pixel  aspects,  and  the  bitmap  should  be  adjusted  for  non-  1:1
  259. environments.   Then  again,  the  aspect  of a  pattern fill,  may not
  260. matter, with regards to aspect.
  261.  
  262.      If an  error is  detected, then  the interpreter  in the  terminal
  263. program  will skip  characters  until  a  double  escape or  a carriage
  264. return comes along and respectively  exit GRIP command mode or continue
  265. interpreting.
  266.  
  267.      I would like to  see this  standard go  far towards  standardising
  268. BBS  graphics and  Telnet graphics  alike.  I  hope that  the author of
  269. SKYPIX is  not too  uncomfortable, but  it is  you that  caused healthy
  270. competition in  the  area  of  communications  graphics protocols,  not
  271. me.... 8-)
  272.  
  273.      I consider this to  be shareware  information, and if you make any
  274. money out of this  info, please  think of  me when you think of keeping
  275. all the  spoils for  yourself...  And  think of  me when  you do  so...
  276. sigh!!!
  277. -----------------------------------------------------------------------
  278.                        HOW TO CONTACT THE AUTHOR
  279. -----------------------------------------------------------------------
  280.  
  281.     Internet:  s3007048@mackay.mpce.mq.edu.au
  282.  
  283.   Compuserve:  internet:s3007048@mackay.mpce.mq.edu.au
  284.  
  285.      Fidonet:  "Internet" at node 3:713/602, 3:632/400 or 1:105/14
  286.                First line of text as follows:
  287.                To: s3007048@mackay.mpce.mq.edu.au
  288.  
  289.   Snail-Mail:  Michael Glew
  290.                Lot 61 Warrambool Road
  291.                Tumbi Umbi NSW 2261
  292.                Australia
  293.